# -*- coding: UTF-8 -*-

"""
@author: 肥仔编程
@file:09.py
@time:2021-04-22
"""

"""
    高阶函数
        fn(a, b, c), 参数中 a、b 为参数， c 为函数，这样在函数 fn 中使用函数 c 进行相关处理
"""

"""
    sorted() 对序列进行排序，注意排序之后产生一个新的序列
"""
# nums = [1, 3, 2, 5, 6, 9]
# print(nums, sorted(nums))

"""
    sort() 实现排序
"""
# 普通形式下，直接使用进行排序
nums = [1, 3, 2, 5, 6, 9]
nums.sort()
print(nums)
# 字典形式通过自定义函数方式实现
teams = [
    {"name":"唐僧", "age":12, "sex":"男"},
    {"name":"孙悟空", "age":13, "sex":"男"},
    {"name":"猪八戒", "age":15, "sex":"男"},
    {"name":"沙悟净", "age":10, "sex":"男"}
]
def my_sort(items):

    return items["age"]
teams.sort(key=my_sort, reverse=True)
print(teams)

"""
    filter 函数,对序列中不符合条件的进行过滤
    第一个参数为函数，循环对第二个序列中的内容进行处理
    第一个参数为 None，第二个序列内容的内容不进行处理
"""
nums = [1, 3, 2, 5, 6, 9]
temp_list = filter(None, nums)
print(temp_list, list(temp_list))
temp_list = filter(lambda num : num % 2, nums)
print(temp_list, list(temp_list))

"""
    map函数，对序列中的内容进行处理
    第一个参数为函数，循环为第二个参数序列中的内容进行处理
    第一个参数为None，不进行任何处理
"""
nums = [1, 3, 2, 5, 6, 9]
temp_list = map(lambda num : num + 1, nums)
print(temp_list, list(temp_list))

